package com.jie.demo.mock;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

/**
 * 当不应spring容器，需要进行以来注入的时候
 * 用@mock注解的实体，可以被注入到@org.mockito.InjectMocks注解的实体，从而起到依赖注入的作用
 * 此处有注入顺序问题：
 * Mockito 尝试按 非默认构造函数, setter 方法, 属性 的顺序来注入 Mock 对象
 * - 非默认构造函数注入: Mockito 会选择参数个数最多的构造函数(称之为最大构造函数)
 *
 * 有一定约束性，直接用springtest 适配mock注解比较好
 */
@RunWith(MockitoJUnitRunner.class)
public class InjectMocks {
    @Mock
    private UserDao userDao;

    @org.mockito.InjectMocks
    private UserService testMe;

    @Test
    public void testInjectMocks() {
        System.out.println(testMe.userDao.getClass());
    }
}
